// // 此函数是实现严书p30 算法2.11和算法2.12的程序
// #include "c1.h"
// typedef int ElemType;
// #include "c2-2.h"
// #include "bo2-2.h"
// #include "func2-2.h"

// //算法 2. 11 是一个从表尾到表头逆向建立单链表的算法
// void CreateList(LinkList &L, int n)//逆位序输入 n 个元素的值．建立带表头结点的单链线性表 L
// {
//     int i;
//     LinkList p;
//     L = (LinkList)malloc(sizeof(LNode));
//     L->next = NULL;
//     printf("请输入%d个数据\n", n);
//     for(i = n; i>0; i--)
//     {
//         p = (LinkList)malloc(sizeof(LNode));//生成新节点
//         scanf("%d", &p->data);
//         p->next = L->next;
//         L->next = p;
//     }
// }

// //扩展：正位序输入n个元素的值，建立带头节点的单链线性表L
// void CreateList1(LinkList &L, int n)
// {
//     int i;
//     LinkList p, q;
//     L = (LinkList)malloc(sizeof(LNode));
//     L->next = NULL;  
//     q = L;
//     printf("请输入%d个数据\n", n);
//     for(i = 1; i<=n ; i++)
//     {
//         p = (LinkList)malloc(sizeof(LNode));//生成新节点
//         scanf("%d", &p->data);//给新节点输入元素值
//         q->next = p;//将新节点插在表尾
//         q = q->next;//q指向尾节点
//     }
//     p->next = NULL;//最后一个节点的指针域为空
// }

// //算法2.12 两个有序链表并为一个有序链表
// void MergeList(LinkList La, LinkList &Lb, LinkList &Lc)
// {//已知单链线性表La和Lb的元素按值非递减排列
// //归并La和Lb得到新的单链线性表Lc， Lc的值也是按值非递减排列（销毁Lb）
//     LinkList pa = La->next;
//     LinkList pb = Lb->next;//pa pb分别指向La Lb的首元节点
//     LinkList pc;
//     Lc = pc = La;//用La的头节点作为Lc的头节点，pc指向La的头节点（Lc的尾节点）
//     while(pa && pb) // La和Lb中的元素都未比较完时
//     {
//         if(pa->data <= pb->data)//La的当前元素小
//         {
//             pc->next = pa; //将当前pa所指向的节点归并到Lc中
//             pc = pa;
//             pa = pa->next;
//         }
//         else
//         {
//             pc->next = pb;
//             pc =pb;
//             pb = pb->next;
//         }
//     }
//     pc->next = pa ? pa : pb; //插入剩余段
//     free(Lb);//销毁Lb
//     Lb=NULL;
// }

// TEST(algo2_11_algo_2_12, demo)
// {
//     int n = 5;
//     LinkList La, Lb, Lc;
//     printf("按非递减顺序");
//     CreateList1(La, n);//根据输入顺序，正位序建立线性表
//     printf("La=");
//     ListTraverse(La, print);//输出链表La的内容
//     printf("按非递增顺序");
//     CreateList(Lb, n);//根据输入顺序，逆序建立线性表
//     printf("Lb=");
//     ListTraverse(Lb, print);//输出链表Lb的内容
//     MergeList(La, Lb, Lc);
//     printf("Lc=");
//     ListTraverse(Lc, print);//输出链表Lb的内容

// }
